ostree.git
11 years agopackaging: Add man5 pages
Colin Walters [Wed, 4 Feb 2015 01:28:18 +0000 (20:28 -0500)]
packaging: Add man5 pages

11 years agotests: Add tests for ot-unix-utils
Giuseppe Scrivano [Mon, 2 Feb 2015 12:37:48 +0000 (13:37 +0100)]
tests: Add tests for ot-unix-utils

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoconfigure.ac: Enable option subdir-objects for automake
Giuseppe Scrivano [Mon, 2 Feb 2015 12:00:32 +0000 (13:00 +0100)]
configure.ac: Enable option subdir-objects for automake

It silences an automake warning and keep the rootdir cleaner.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agotests: Move test-varint and test-rollsum under "make check"
Giuseppe Scrivano [Mon, 2 Feb 2015 11:56:40 +0000 (12:56 +0100)]
tests: Move test-varint and test-rollsum under "make check"

"make check" tests are always enabled and they do not require to be
installed.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agosyntax-check: Remove empty lines at the end of file
Giuseppe Scrivano [Mon, 2 Feb 2015 12:48:29 +0000 (13:48 +0100)]
syntax-check: Remove empty lines at the end of file

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agopull: use a single per-transaction syncfs instead of fsync
Giuseppe Scrivano [Thu, 22 Jan 2015 00:05:13 +0000 (01:05 +0100)]
pull: use a single per-transaction syncfs instead of fsync

Do not write directly to objects/ but maintain pulled files under tmp/
with a "tmpobject-$CHECKSUM.$OBJTYPE" name until they are syncfs'ed to
disk.

Move them under objects/ at ostree_repo_commit_transaction cleanup
time.

Before (test done on a local network):

$ LANG=C sudo time ./ostree --repo=repo pull origin master

0 metadata, 3 content objects fetched; 83820 KiB; 4 delta parts
fetched, transferred in 417 seconds
16.42user 6.73system 6:57.19elapsed 5%CPU (0avgtext+0avgdata
248428maxresident)k
24inputs+794472outputs (0major+233968minor)pagefaults 0swaps

After:

$ LANG=C sudo time ./ostree --repo=repo pull origin master

0 metadata, 3 content objects fetched; 83820 KiB; 4 delta parts
fetched, transferred in 9 seconds
14.70user 2.87system 0:09.99elapsed 175%CPU (0avgtext+0avgdata
256168maxresident)k
0inputs+794472outputs (0major+164333minor)pagefaults 0swaps

https://bugzilla.gnome.org/show_bug.cgi?id=728065

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoReplace "==" with "=" in shell script test
Giuseppe Scrivano [Fri, 30 Jan 2015 14:15:32 +0000 (15:15 +0100)]
Replace "==" with "=" in shell script test

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoDo not interleave spaces and tabs
Giuseppe Scrivano [Fri, 30 Jan 2015 14:14:42 +0000 (15:14 +0100)]
Do not interleave spaces and tabs

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoRemove magic argument numbers to exit(2)
Giuseppe Scrivano [Fri, 30 Jan 2015 14:12:43 +0000 (15:12 +0100)]
Remove magic argument numbers to exit(2)

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoRemove unused <dirent.h>
Giuseppe Scrivano [Fri, 30 Jan 2015 14:10:16 +0000 (15:10 +0100)]
Remove unused <dirent.h>

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoRemove unused include <assert.h>
Giuseppe Scrivano [Fri, 30 Jan 2015 14:09:19 +0000 (15:09 +0100)]
Remove unused include <assert.h>

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agosyntax-check: quote the first argument to AC_DEFINE
Giuseppe Scrivano [Fri, 30 Jan 2015 14:06:22 +0000 (15:06 +0100)]
syntax-check: quote the first argument to AC_DEFINE

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoRemove trailing dot from error message
Giuseppe Scrivano [Fri, 30 Jan 2015 14:04:11 +0000 (15:04 +0100)]
Remove trailing dot from error message

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoAdd infrastructure for "make syntax-check"
Giuseppe Scrivano [Fri, 30 Jan 2015 13:55:50 +0000 (14:55 +0100)]
Add infrastructure for "make syntax-check"

New files copied from the gnulib project.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoFix repeated words.
Giuseppe Scrivano [Fri, 30 Jan 2015 13:38:52 +0000 (14:38 +0100)]
Fix repeated words.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoFix make distcheck
Giuseppe Scrivano [Fri, 30 Jan 2015 13:19:04 +0000 (14:19 +0100)]
Fix make distcheck

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agopull: (trivial) Fix English in function name
Colin Walters [Sun, 25 Jan 2015 14:14:21 +0000 (09:14 -0500)]
pull: (trivial) Fix English in function name

s/writed/written/

11 years agoRelease 2015.3
Colin Walters [Fri, 23 Jan 2015 19:54:38 +0000 (14:54 -0500)]
Release 2015.3

11 years agoExplicitly label .origin files as configuration
Colin Walters [Thu, 22 Jan 2015 22:35:32 +0000 (17:35 -0500)]
Explicitly label .origin files as configuration

subscription-manager has a daemon that runs in a confined domain,
and it doesn't have permission to write usr_t, which is the default
label of /ostree/deploy/$osname/deploy.

A better long term fix is probably to move the origin file into the
deployment root as /etc/ostree/origin.conf or so.

In the meantime, let's ensure the .origin files are labeled as
configuration.

11 years agobuild: Add --disable-static-deltas
Colin Walters [Thu, 22 Jan 2015 21:19:11 +0000 (16:19 -0500)]
build: Add --disable-static-deltas

Since they're unstable, we want to allow organizations shipping ostree
now to be future proof against any changes.

11 years agopull: Further extend static delta progress
Colin Walters [Wed, 21 Jan 2015 22:53:52 +0000 (17:53 -0500)]
pull: Further extend static delta progress

With deltas, we have an accurate total size, among other things.

11 years agopull: Distingiush delta pulls from loose better
Colin Walters [Wed, 21 Jan 2015 14:13:12 +0000 (09:13 -0500)]
pull: Distingiush delta pulls from loose better

11 years agocommit: Fix segfault on async writes if object exists and checksum requested
Colin Walters [Thu, 22 Jan 2015 02:16:11 +0000 (21:16 -0500)]
commit: Fix segfault on async writes if object exists and checksum requested

If an object already existed and we somehow tried to pull it, the
caller would still expect a returned checksum.

This appears to happen with static deltas for some reason; we might be
including duplicate metadata objects.  Regardless, this is a bug that
should be fixed.

11 years agotraverse: Fix transfer on hash table
Colin Walters [Wed, 21 Jan 2015 16:58:31 +0000 (11:58 -0500)]
traverse: Fix transfer on hash table

Otherwise, bindings try to erroneously unref the key/values as well.

11 years agodeltas: Use trusted writes
Colin Walters [Wed, 21 Jan 2015 04:28:26 +0000 (23:28 -0500)]
deltas: Use trusted writes

We have a chain of checksums from the root up until here.  While doing
checksums of the objects individually would be a good redundancy check
for test cases and the like, when doing a pull there's no good reason
to burn cycles on SHA256.

11 years agodeltas: Drop async content writes
Colin Walters [Wed, 21 Jan 2015 04:21:26 +0000 (23:21 -0500)]
deltas: Drop async content writes

This caused deadlocks and/or EMFILE due to the interaction between
threads and fds.  What we really want here is a better pull-based
model for parsing content objects.

Another idea would be to change static deltas so that content objects
have a special opcode that includes their metadata first, and then do
rollsums etc. only over actual content.

11 years agodeltas: Unlink temporary metadata files before processing
Colin Walters [Wed, 21 Jan 2015 03:59:16 +0000 (22:59 -0500)]
deltas: Unlink temporary metadata files before processing

Leaking them is bad.

11 years agostatic-delta: limit the number of writes in process to 1
Giuseppe Scrivano [Fri, 16 Jan 2015 18:21:27 +0000 (19:21 +0100)]
static-delta: limit the number of writes in process to 1

This will avoid too many open files at the same time that could cause
an EMFILE error.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
(cherry picked from commit bc092b06f0e34e93f7d6102957bf55fd7ffd1b9e)

11 years agostatic delta generation: Separate max chunk size from min fallback size
Alexander Larsson [Tue, 20 Jan 2015 13:11:47 +0000 (14:11 +0100)]
static delta generation: Separate max chunk size from min fallback size

There is no particular reason these have to be the same.

https://bugzilla.gnome.org/show_bug.cgi?id=721799

11 years agoadmin: Add set-origin command
Colin Walters [Fri, 16 Jan 2015 18:07:26 +0000 (13:07 -0500)]
admin: Add set-origin command

See projectatomic/rpm-ostree#42 for rationale. There are two high
level use cases:

 - If the OS comes unconfigured, this is a way to point it at a repo of your choice.
 - To switch between repositories while keeping the same branch easily.

11 years agosysroot: Add ostree_sysroot_write_origin_file() API
Colin Walters [Fri, 16 Jan 2015 18:04:29 +0000 (13:04 -0500)]
sysroot: Add ostree_sysroot_write_origin_file() API

We want to allow admins to change the origin file without doing a new
deployment, so this will be part of a future "admin set-origin"
command.

11 years agocmdline: (cleanup) Add internal helper to parse key=value options
Colin Walters [Fri, 16 Jan 2015 18:03:10 +0000 (13:03 -0500)]
cmdline: (cleanup) Add internal helper to parse key=value options

This will be used by a later "ostree admin set-origin" as well.

11 years agoadmin: (cleanup) Add internal API to find a deployment given an index
Colin Walters [Fri, 16 Jan 2015 17:57:39 +0000 (12:57 -0500)]
admin: (cleanup) Add internal API to find a deployment given an index

At some point, we might want to expose a uniform way to refer
to deployments by an index.  At the moment undeploy is the only
command that does.

I plan to introduce another command which optionally takes an index,
so prepare a helper function for this.

11 years agoeditor: honor arguments environment variable
Giuseppe Scrivano [Fri, 16 Jan 2015 10:48:50 +0000 (11:48 +0100)]
editor: honor arguments environment variable

My EDITOR looks like "EDITOR=emacs -nw", ensure that it is honored.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agostatic-delta: do not accept both --from=REV and --empty for generate
Giuseppe Scrivano [Wed, 14 Jan 2015 15:53:21 +0000 (16:53 +0100)]
static-delta: do not accept both --from=REV and --empty for generate

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agodoc: Manpage love for static-delta command
Matthew Barnes [Thu, 15 Jan 2015 20:49:49 +0000 (15:49 -0500)]
doc: Manpage love for static-delta command

11 years agodeltas: Use *at() for writes
Colin Walters [Thu, 15 Jan 2015 03:29:45 +0000 (22:29 -0500)]
deltas: Use *at() for writes

Yet another GFile* user goes away in a performance sensitive path.

11 years agopull: Delete processed delta parts
Colin Walters [Thu, 15 Jan 2015 03:18:00 +0000 (22:18 -0500)]
pull: Delete processed delta parts

Otherwise they stay around until a much later GC.

11 years agoChange OstreeFetcher to be dirfd-relative
Colin Walters [Thu, 15 Jan 2015 03:04:06 +0000 (22:04 -0500)]
Change OstreeFetcher to be dirfd-relative

This is a noticeable cleanup, and fixes another big user of GFile* in
performance/security sensitive codepaths.

I'm specifically making this change because the static deltas code was
leaking temporary files, and cleaning that up nicely would be best if
we were fd relative.

11 years agocore: Add an API to parse a content file using dirfd relative lookup
Colin Walters [Thu, 15 Jan 2015 03:03:02 +0000 (22:03 -0500)]
core: Add an API to parse a content file using dirfd relative lookup

This will be used for a later change to use openat() for the fetching
code.  Note that we drop the code to use mmap() - it was an attempt to
avoid keeping a fd open, but we do correctly close anyways.

11 years agochecksumutils: Support splicing stream to arbitrary checksum type
Colin Walters [Thu, 15 Jan 2015 03:01:54 +0000 (22:01 -0500)]
checksumutils: Support splicing stream to arbitrary checksum type

This will be used later by the metalink code; you can splice with a
NULL output stream to an arbitrary GChecksum instead of just a SHA256
one.

11 years agodeltas: (trivial) delete some debugging prints
Colin Walters [Wed, 14 Jan 2015 16:34:18 +0000 (11:34 -0500)]
deltas: (trivial) delete some debugging prints

They create too much noise.

11 years agoAllow creating and pulling static deltas starting from "empty"
Alexander Larsson [Tue, 13 Jan 2015 14:09:43 +0000 (15:09 +0100)]
Allow creating and pulling static deltas starting from "empty"

You create these with something like:
  ostree static-delta generate --empty --to=master

These will be automatically used during pull if no previous revision
exists in the target repo.

These work very much like the normal static deltas except they
are named just by the "to" revision. I.e:

deltas/94/f7d2dc23759dd21f9bd01e6705a8fdf98f90cad3e0109ba3f6c091c1a3774d

for a from-scratch to 94f7d2dc23759dd21f9bd01e6705a8fdf98f90cad3e0109ba3f6c091c1a3774d delta.

https://bugzilla.gnome.org/show_bug.cgi?id=721799

11 years agoFix ostree_repo_list_static_delta_names
Alexander Larsson [Tue, 13 Jan 2015 20:28:17 +0000 (21:28 +0100)]
Fix ostree_repo_list_static_delta_names

The current layout uses a prefix of two bytes as the initial dir
and a second directory inside that with the superblock. This
updates the list code to handle that.

https://bugzilla.gnome.org/show_bug.cgi?id=721799

11 years agodeltas: Do not traverse all objects, only both commits
Colin Walters [Wed, 14 Jan 2015 02:32:02 +0000 (21:32 -0500)]
deltas: Do not traverse all objects, only both commits

That's the way they were designed.  We really don't want to include
all intervening objects.

https://bugzilla.gnome.org/show_bug.cgi?id=721799

11 years agorepo: Fix bare-user file loads
Colin Walters [Mon, 12 Jan 2015 17:39:57 +0000 (12:39 -0500)]
repo: Fix bare-user file loads

Regression from 86764dbf007fca1e42aacb830e3c1911b198be6e

This function is kind of fiendish now that we have 3 cases, each of
which want to be optimized somewhat to only load what's necessary
(e.g. don't open the file if we don't have an output for stream
requested).

Clean things up so that BARE_USER and BARE are separate conditionals
that share as much as possible, and fix the bug that asserted we
were in BARE mode.

I tested this by running test-basic-user.sh by hand.

11 years agorepo: Deduplicate some code in load_file
Colin Walters [Mon, 12 Jan 2015 17:10:02 +0000 (12:10 -0500)]
repo: Deduplicate some code in load_file

11 years agoRelease 2015.2
Colin Walters [Thu, 8 Jan 2015 22:23:02 +0000 (17:23 -0500)]
Release 2015.2

11 years agoTwo 32 bit compilation fixes
Colin Walters [Thu, 8 Jan 2015 21:16:21 +0000 (16:16 -0500)]
Two 32 bit compilation fixes

11 years agorepo: Report metadata fetch progress separately
Matthew Barnes [Thu, 8 Jan 2015 19:43:01 +0000 (14:43 -0500)]
repo: Report metadata fetch progress separately

Partially resolves https://bugzilla.gnome.org/740276

11 years agopull: Prioritize fetching metadata objects over content objects
Matthew Barnes [Thu, 8 Jan 2015 19:11:12 +0000 (14:11 -0500)]
pull: Prioritize fetching metadata objects over content objects

11 years agofetcher: Add a priority value to async requests
Matthew Barnes [Thu, 8 Jan 2015 18:19:48 +0000 (13:19 -0500)]
fetcher: Add a priority value to async requests

11 years agoRelease 2015.1
Colin Walters [Thu, 8 Jan 2015 18:00:43 +0000 (13:00 -0500)]
Release 2015.1

11 years agoBump libgsystem dependency
Colin Walters [Thu, 8 Jan 2015 18:00:27 +0000 (13:00 -0500)]
Bump libgsystem dependency

11 years agocheckout: Add --fsync=false
Colin Walters [Tue, 6 Jan 2015 21:00:27 +0000 (16:00 -0500)]
checkout: Add --fsync=false

Some use cases for checkouts don't need to fsync during checkout.
Installer programs for example will just do a global fsync at the end.

In the future, the default "ostree admin" core could also be
rearchitected to only do a transaction commit right before reboot, and
do the fsync then.

https://bugzilla.gnome.org/show_bug.cgi?id=742482

11 years agoAdd internal ot_openat_read_stream() helper
Colin Walters [Wed, 7 Jan 2015 13:41:45 +0000 (08:41 -0500)]
Add internal ot_openat_read_stream() helper

We had two cases which were creating an input stream using openat().

11 years agoUse *at() functions for native filesystem commits
Colin Walters [Tue, 16 Dec 2014 03:23:37 +0000 (22:23 -0500)]
Use *at() functions for native filesystem commits

This is just an efficiency optimization.  We're getting fairly close
to all of the hot code paths using `*at()`.

Note that we end up maintaining a half-duplicate code path set here,
because we still need to support commits from an arbitrary GFile *,
which in a possible common case is an OSTree commit.

I think it's worth it though.

11 years agorefs: Use G_IO_ERROR_NOT_FOUND when a ref lookup fails
Colin Walters [Tue, 6 Jan 2015 23:47:04 +0000 (18:47 -0500)]
refs: Use G_IO_ERROR_NOT_FOUND when a ref lookup fails

rpm-ostree had code to check for this, which didn't actually work.

I don't see a no backwards compatibility concern in changing this, as
it's unlikely a caller would try to sensibly disambiguate FAILED.

11 years agorepo: Improve ostree_repo_load_file() to use `*at()` for xattrs
Colin Walters [Tue, 6 Jan 2015 21:47:03 +0000 (16:47 -0500)]
repo: Improve ostree_repo_load_file() to use `*at()` for xattrs

We were already using openat() for the contents, but not the xattrs.
Now that libgsystem 2014.3 has gs_fd_get_all_xattrs(), make use of it.

Clean things up a bit so we only open the fd once.

11 years agodeploy: Update to use latest libgsystem API
Colin Walters [Sat, 3 Jan 2015 17:03:36 +0000 (12:03 -0500)]
deploy: Update to use latest libgsystem API

11 years agodeploy: Actually copy xattrs of modified config files
Colin Walters [Sat, 3 Jan 2015 17:14:11 +0000 (12:14 -0500)]
deploy: Actually copy xattrs of modified config files

Regression from 7b01bd2e4333d4346dd08e0b5caf672f56b1ccfd
where we stopped using g_file_copy() - we lost copying xattrs.

This specifically breaks /etc/shadow SELinux labeling, with the
obvious bad consequences.

https://bugzilla.gnome.org/show_bug.cgi?id=742289

11 years agoRequire a PREFIX when deleting refs
Matthew Barnes [Tue, 6 Jan 2015 14:36:45 +0000 (09:36 -0500)]
Require a PREFIX when deleting refs

Also fix the "ostree refs" help output to not give the impression that
the --delete option takes its own PREFIX argument.

https://bugzilla.gnome.org/show_bug.cgi?id=742454

11 years agoPort to libgsystem errno API, hard depend on 2014.3
Colin Walters [Mon, 5 Jan 2015 02:17:11 +0000 (21:17 -0500)]
Port to libgsystem errno API, hard depend on 2014.3

This is long overdue to make it to libgsystem.  Update our dependency.

11 years agoMerge branch 'giuseppe/staticdeltas' of https://github.com/giuseppe/ostree
Colin Walters [Fri, 19 Dec 2014 21:31:31 +0000 (16:31 -0500)]
Merge branch 'giuseppe/staticdeltas' of https://github.com/giuseppe/ostree

11 years agoEnforce 'rdev' (device file major/minor) is 0
Colin Walters [Fri, 19 Dec 2014 01:10:25 +0000 (20:10 -0500)]
Enforce 'rdev' (device file major/minor) is 0

Historically OSTree supported device files, but it wasn't useful, and
added attack surface.  Support was removed in

https://git.gnome.org/browse/ostree/commit/?id=62a896350bd54bff5a9413d2ee0fad7ff4364f9a

Perform a further cleanup by enforcing internally that the device
major/minor must be 0.

Conflicts:
src/libostree/ostree-core.c

11 years agocore: Deduplicate code converting struct stat -> GFileInfo
Colin Walters [Wed, 17 Dec 2014 02:14:10 +0000 (21:14 -0500)]
core: Deduplicate code converting struct stat -> GFileInfo

We were doing the same thing in a number of places, make a helper
function.

11 years agoAdd ostree_repo_pull_default_console_progress_changed()
Matthew Barnes [Thu, 18 Dec 2014 15:06:47 +0000 (10:06 -0500)]
Add ostree_repo_pull_default_console_progress_changed()

Replaces ot_common_pull_progress() in ostree binary, so it can be shared
with rpm-ostree.

11 years agorepo: Minor cleanup: Move size generation code initialization
Colin Walters [Tue, 16 Dec 2014 03:55:56 +0000 (22:55 -0500)]
repo: Minor cleanup: Move size generation code initialization

It has a global effect, so do it in the entrypoint.

11 years agoRemove unused variable warning
Giuseppe Scrivano [Thu, 11 Dec 2014 09:41:52 +0000 (10:41 +0100)]
Remove unused variable warning

11 years agofix --help for static-delta
Giuseppe Scrivano [Thu, 30 Oct 2014 13:23:34 +0000 (14:23 +0100)]
fix --help for static-delta

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agotest-rollsum: Process all input, print more statistics
Colin Walters [Tue, 24 Jun 2014 11:58:13 +0000 (07:58 -0400)]
test-rollsum: Process all input, print more statistics

Copying the bup code, we need to loop over all chunks even after
hitting the rollsum returning 0.

Also print more statistics.

11 years agoStatic deltas support
Colin Walters [Sun, 9 Feb 2014 21:11:37 +0000 (16:11 -0500)]
Static deltas support

https://bugzilla.gnome.org/show_bug.cgi?id=721799

11 years agoRevert "ostree-repo-pull: Remove currently #if 0 static delta code"
Giuseppe Scrivano [Tue, 11 Nov 2014 09:36:37 +0000 (10:36 +0100)]
Revert "ostree-repo-pull: Remove currently #if 0 static delta code"

This reverts commit 1c2e20af25b21abc0dee1547a0d5bad1a21c0b58.

11 years agodoc: Update gtk-docs
Matthew Barnes [Thu, 18 Dec 2014 00:20:17 +0000 (19:20 -0500)]
doc: Update gtk-docs

11 years agoAdd "ostree remote list" command
Matthew Barnes [Tue, 16 Dec 2014 15:41:34 +0000 (10:41 -0500)]
Add "ostree remote list" command

Lists available remote names.

11 years agoAdd ostree_repo_remote_list()
Matthew Barnes [Tue, 16 Dec 2014 15:29:09 +0000 (10:29 -0500)]
Add ostree_repo_remote_list()

Lists available remote names.

11 years agoRelease 2014.13
Colin Walters [Wed, 17 Dec 2014 16:35:52 +0000 (11:35 -0500)]
Release 2014.13

11 years agobasic-test: Fixup mtime check for bare-user
Colin Walters [Wed, 17 Dec 2014 16:34:10 +0000 (11:34 -0500)]
basic-test: Fixup mtime check for bare-user

https://bugzilla.gnome.org/show_bug.cgi?id=741662

11 years agotests: Fix two bugs in tests revealed by new remote changes
Colin Walters [Wed, 17 Dec 2014 15:43:01 +0000 (10:43 -0500)]
tests: Fix two bugs in tests revealed by new remote changes

11 years agoAdd more flexible _remote_change() API , expose via 'ostree remote'
Colin Walters [Mon, 15 Dec 2014 21:21:15 +0000 (16:21 -0500)]
Add more flexible _remote_change() API , expose via 'ostree remote'

For Anaconda, I needed OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS,
with the GFile *sysroot argument to avoid ugly hacks.  We want to
write the content provided via "ostreesetup" as a remote to the target
chroot only in the case where it isn't provided as part of the tree
content itself.

This is also potentially useful in idempotent systems management tools
like Ansible.

https://bugzilla.gnome.org/show_bug.cgi?id=741577

11 years agorepo: (cleanup) Use _is_system() rather than inlining it
Colin Walters [Mon, 15 Dec 2014 18:59:46 +0000 (13:59 -0500)]
repo: (cleanup) Use _is_system() rather than inlining it

No reason to duplicate the code.

11 years agoImprove "ostree remote" help output
Matthew Barnes [Thu, 4 Dec 2014 18:37:26 +0000 (13:37 -0500)]
Improve "ostree remote" help output

Must have glossed over these because the commands are so simple.

 - List subcommands for "ostree remote --help".

 - Only show options relevant to COMMAND for
   "ostree remote COMMAND --help".

11 years agotrivial-httpd: use PR_SET_PDEATHSIG by default
Colin Walters [Mon, 8 Dec 2014 19:44:44 +0000 (14:44 -0500)]
trivial-httpd: use PR_SET_PDEATHSIG by default

If we're not daemonizing, this is a useful way to ensure we go away if
our parent does.

https://bugzilla.gnome.org/show_bug.cgi?id=741264

11 years agotest-local-pull: Sort find output to make test robust
Alexander Larsson [Mon, 8 Dec 2014 19:26:58 +0000 (20:26 +0100)]
test-local-pull: Sort find output to make test robust

There is no guarantee that find will produce output in the same
order, so we need to sort the output to ensure we always
get the same output.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agorepo: Add private functions to access remote options
Matthew Barnes [Thu, 4 Dec 2014 20:38:36 +0000 (15:38 -0500)]
repo: Add private functions to access remote options

ostree_repo_pull_with_options() needs this, and I'd rather keep the
OstreeRemote struct definition tucked away in ostree-repo.c with its
own internal API.

11 years agorepo: Add ostree_repo_remote_get_url()
Matthew Barnes [Thu, 4 Dec 2014 00:46:03 +0000 (19:46 -0500)]
repo: Add ostree_repo_remote_get_url()

Peeking at remote details by way of ostree_repo_copy_config() doesn't
work anymore.

11 years agorepo: Add an internal struct to manage remotes
Matthew Barnes [Wed, 3 Dec 2014 23:58:16 +0000 (18:58 -0500)]
repo: Add an internal struct to manage remotes

OstreeRemote is a reference-counted struct that encompasses data about a
remote, whether read from a configuration file or created explicitly via
ostree_repo_remote_add().

OstreeRemotes are held in an internal table indexed by remote name.
This solves some problems caused by merging system-wide remote data into
the OstreeRepo's internal config key file.

Also fixes https://bugzilla.gnome.org/show_bug.cgi?id=740911

11 years agolibotutil: Add ot_keyfile_copy_group()
Matthew Barnes [Wed, 3 Dec 2014 22:16:48 +0000 (17:16 -0500)]
libotutil: Add ot_keyfile_copy_group()

Copies all the keys of a group from one GKeyFile to another.

11 years agoAdd local-pull archive-z2 <=> bare-user roundtrip test
Alexander Larsson [Mon, 8 Dec 2014 11:00:59 +0000 (12:00 +0100)]
Add local-pull archive-z2 <=> bare-user roundtrip test

This creates a archive-z2 repo, pull-locals it to bare-user and then
again back to archive-z2 making sure things fsck along the way.
Then it checks out all repos and makes sure each one reproduces
the same result.

Unfortunately we can't install this as a real test because
it doesn't work in the test-runner because tmpfs doesn't support
user xattrs.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agoAdd test-basic-user.sh testing for bare-user repos
Alexander Larsson [Fri, 5 Dec 2014 13:40:15 +0000 (14:40 +0100)]
Add test-basic-user.sh testing for bare-user repos

This just does whatever test-basic.sh does, but on a bare-user
repo.

This works standalone, but unfortunately it breaks in
gnome-desktop-testing-runner as /tmp doesn't support
xattrs, so it is not installed atm.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agoSplit out basic tests from test-basic.sh
Alexander Larsson [Fri, 5 Dec 2014 13:28:16 +0000 (14:28 +0100)]
Split out basic tests from test-basic.sh

This will let us reuse them with other repo types

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agoSupport for "bare-user" repo format
Alexander Larsson [Thu, 4 Dec 2014 10:11:58 +0000 (11:11 +0100)]
Support for "bare-user" repo format

This format is pretty much the same as the "bare" format, except the
file ownership and xattrs is not stored in the actual filesystem object, but
rather on the side in a user xattr. This means two things:

1) An unprivileged user can store such a repo independent of the types
   of files in it or their xattrs. And you can later (as root)
   reconstruct the real filesystem tree with ownership. Although you
   can't do that using hardlink-sharing. This also means ostree
   fsck does a full verification.

2) Such a repository can be checked out with user-mode (checkout -U)
   as an unprivileged user using hardlinks for space sharing.

Additionally, symlinks are stored as regular files (with the content
being the symlink target) because user xattrs are not supported on
symlinks. We know at checkout time if the file is a symlink because
the original st_mode is stored in the xattr metadata.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agoAdd ot_lgetxattrat and ot_lsetxattrat utils
Alexander Larsson [Wed, 3 Dec 2014 09:58:41 +0000 (10:58 +0100)]
Add ot_lgetxattrat and ot_lsetxattrat utils

These are implementation of the missing corresponding syscalls that
are done with the /proc/self/fd mechanism described at:

https://mail.gnome.org/archives/ostree-list/2014-February/msg00017.html

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agoREADME.md: Add a quick blurb on style
Colin Walters [Sun, 7 Dec 2014 22:19:42 +0000 (17:19 -0500)]
README.md: Add a quick blurb on style

11 years agounion checkout: Fix symlink handling for xattrs
Alexander Larsson [Fri, 5 Dec 2014 12:46:58 +0000 (13:46 +0100)]
union checkout: Fix symlink handling for xattrs

Applying xattrs on a symlink during checkout failed since
it was setting the xattrs on the final filename, not the
temporary name.

This made the "checkout union 1" test in test-basic.sh
fail.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agocheckout: fchown symlink to proper uid/gid
Alexander Larsson [Thu, 4 Dec 2014 19:19:09 +0000 (20:19 +0100)]
checkout: fchown symlink to proper uid/gid

When commiting a symlink we do store the uid/gid of the actual
symlink (i.e. not target). However, this was not restored
on non-user-mode checkout as it should.

This commit fixes that, and additionally it ensures xattrs
on symlinks are not set in user-mode checkout.

https://bugzilla.gnome.org/show_bug.cgi?id=741125

11 years agodeploy: Ensure that we can deploy using only /usr/lib/ostree-boot
Colin Walters [Mon, 1 Dec 2014 03:50:02 +0000 (22:50 -0500)]
deploy: Ensure that we can deploy using only /usr/lib/ostree-boot

rpm-ostree at least has the option to generate a tree with just that
instead of /boot, but while we were enumerating the latter, we'd still
return paths from /boot.

https://bugzilla.gnome.org/show_bug.cgi?id=740947

11 years agodocs: Add verbose option to manual
Kenjiro Nakayama [Tue, 25 Nov 2014 13:25:15 +0000 (22:25 +0900)]
docs: Add verbose option to manual

11 years agoREADME.md: Mention patches and test suite
Colin Walters [Sun, 30 Nov 2014 18:23:06 +0000 (13:23 -0500)]
README.md: Mention patches and test suite

11 years agodocs: Fix a pile of Docbook validation errors
Colin Walters [Sat, 29 Nov 2014 17:15:21 +0000 (12:15 -0500)]
docs: Fix a pile of Docbook validation errors

At least now validates with RNG mode in Emacs.